package com.creative.utils;

import cn.dev33.satoken.stp.StpUtil;
import com.creative.user.domain.dto.UserSpaceDto;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

import static com.creative.constant.Constants.REDIS_KEY_USER_SPACE_USE;
import static com.creative.user.domain.UserInfoConstants.MB;
import static com.creative.user.domain.UserInfoConstants.TOTAL_SPACE;

@Component("redisUtils")
public class RedisUtils {
    @Resource
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 保存用户空间
     *
     * @author ling
     * @date 2024/11/28
     */
    public void saveUserSpace(String userId, UserSpaceDto userSpaceDto) {
        //  saToken（存入Account Session中）  在登录时缓存 user 对象
        StpUtil.getSession().set(REDIS_KEY_USER_SPACE_USE + userId, userSpaceDto);

    }

    /**
     * 获取用户空间
     *
     * @param userId 用户id
     * @return {@link UserSpaceDto }
     * @author ling
     * @date 2024/12/30
     */
    public UserSpaceDto getUserSpace(String userId) {
        UserSpaceDto userSpaceDto = (UserSpaceDto) StpUtil.getSession().get(REDIS_KEY_USER_SPACE_USE + userId);
        if (userSpaceDto == null) {
            userSpaceDto = new UserSpaceDto();
//            TODO 查询当前用户已经上传的文件大小总和
            userSpaceDto.setUseSpace(0L);
//            Long userSpaceDto =
            userSpaceDto.setTotalSpace(TOTAL_SPACE * MB);
            saveUserSpace(userId, userSpaceDto);
        }
        return userSpaceDto;
    }

}
